/* 
 * File:   Figura.h
 * Author: Maximiliano Monzon
 *
 * Created on 26 de septiembre de 2012, 09:16
 */

#ifndef FIGURA_H
#define	FIGURA_H

#include <vector>
#include "IGraficable.h"
#include "Posicion.h"
#include "Pixel.h"
#include "FiguraException.h"

using namespace std;
using namespace TP::Grafica;

namespace TP{ namespace Grafica { namespace Componentes { 

    class Figura : IGraficable{
        public:
            Figura();
            
            Figura(const char pTipo, Posicion* pPosicion);
            
            ~Figura();
            
            const char& getTipo () const;

            Posicion& getPosicion() const;
            
            Posicion& getPosicionGrafica() const;
            
            Pixel& getPixel (long int pX, long int pY) const;
            
            const Pixel& setPixel (long int pX, long int pY, Pixel* pPixel) throw(FiguraException&);
            
            long int width();
            
            long int height();
            
            friend ifstream& operator>> (ifstream& stream, Figura& figura) throw (FiguraException&);
            
        private:
            char tipo;
            unsigned long int altura
                            , ancho;
            Posicion *posicion
                    ,*posicionGrafica;
            
            Pixel***pixels ;
            
    };

}}}

#endif	/* FIGURA_H */

